Object-oriented computing languages have been developed and successfully used to develop a wide variety of software applications. One advantage of the object-oriented languages is the increased programming efficiency gained from the ability to reuse and/or modify prior-written code. C++is one example of a well-known object-oriented computing language.
Platform-independent computing languages have been created that, with the aid of an appropriate virtual machine, permit the same application code to be run in conjunction with a variety of different operating systems. Such languages promote efficiency by eliminating the need to develop a separate version of an application for each type of operating system expected to be encountered. JAVA is an example of a platform-independent computing language. JAVA is also an example of an object-oriented language.
Component-based software architectures provide a system that can enhance the reusability advantage gained from object-oriented languages. Component-based software architectures achieve these gains by facilitating the connecting of two or more separate software components to form a new application. JavaBeans is an example of a component-based software architecture. Other types of component-based software architectures include, for example, Microsoft's COM, IBM's OpenDoc and Netscape's LiveConnect.
In the JavaBean architecture, software components (“beans”) communicate via “events.” A “source” or “event-generating” component fires an event to a “target” or “listener” component. An intermediary object, often referred to as an “adapter,” facilitates the transaction. The adapter can be created by a builder tool at design time using a process known as introspection.
The JavaBean component model is well suited for graphical and non-graphical software components for general-purpose computing systems. The JavaBean component model is not suitable, however, for embedded, time-critical or real time systems. Although JavaBean properties may be acceptable for such systems, JavaBean events are not. Accordingly, an event interface for an object-oriented component-based software architecture is needed that is suitable for an embedded, time-critical or real-time system. Further, a technique for multicasting events is needed.
Additionally, recent advances (for example, the JAVA 2 Platform, Micro Edition and the Real-Time Specification for JAVA) have facilitated similar efficiency gains to be achieved with real-time and embedded hardware driver components. Now, what is further needed is an apparatus for associating a hardware interrupt event with a software component event. Currently existing systems, such as C++, JavaBeans, and Microsoft's COM for example, do not meet the “timely delivery” and memory consumption requirements of time-sensitive and embedded applications.